#-*- codeing = utf-8 -*-
#@Time : 2020/11/24 20:55
#@Author : 阳某
#@File : 08.模块和库.py
#@Software : PyCharm


'''
直接import，会在当前目录下寻找模块
from A import  a as a1
from B import  a as a2

'''


import sys
for path in sys.path:
    print(path)


'''
sys.path
如果内置模块没有 xxx 这样的名字 ，接下来到什么地方查找？

Python的 sys 库 里面有个属性 path。你可以运行下面的语句看看 sys.path 的内容

import sys
for path in sys.path:
    print (path)
通常可以得到类似下面这样的结果

C:\projects\first
C:\Python\Python36\python36.zip
C:\Python\Python36\DLLs
C:\Python\Python36\lib
C:\Python\Python36
C:\Python\Python36\lib\site-packages
这个 sys.path 是一个列表，这个列表里面包含了一些 路径 。

当我们import 一个模块时 ，解释器会 依次到 sys.path 包含的目录下去寻找 有没有同名的模块 。

那么， sys.path 里的路径是怎么来的呢？

解释器启动的时候，是从根据下面这些规则 添加路径到 sys.path 列表里的

启动脚本文件所在的目录

启动脚本就是执行Python程序后面 的参数 脚本文件。

比如 python first.py 那么这个 first.py 就是 启动脚本文件， 脚本文件所在的目录 会被加到 sys.path 中作为模块搜索路径。


如果启动命令行，没有指定脚本文件，而是像这样 python ，直接 启动了 python 交互命令行，

或者 像这样 python -m pytest [...] 通过 -m 参数 执行某个模块，

那么 当前工作目录 会被加到 sys.path 中作为模块搜索路径。

PYTHONPATH 环境变量里的目录

我们可以在 PYTHONPATH 环境变量里面添加上 多个目录作为 模块搜索路径。 多个目录之间的分隔符根据操作系统而定。 Windows下面是分号，Linux下面是冒号。

解释器启动的时候 ， PYTHONPATH 环境变量里的目录 会被加到 sys.path 中作为模块搜索路径。

Python解释器的 缺省安装目录（installation-dependent default）

比如： Windows下面就是 在 解释器安装目录中的 lib/site-packages 目录。

如果我们自己想添加一些目录，作为模块搜索路径，怎么办呢？

一种方法是：把这些目录加到环境变量 PYTHONPATH 里。

因为Python解释器在启动后，会把 环境变量PYTHONPATH里包含的目录，自动添加到sys.path的路径列表里面。

比如，在windows下面，我们可以用这样的命令添加

set PYTHONPATH=c:\myproject;c:\myproject\mylib
那么解释器启动后， c:\myproject 和 c:\myproject\mylib 这两个目录就被添加到了sys.path里面。

注意这样的环境变量添加，只在当前命令行窗口有效。重新打开窗口就会失效了。

如果要确保持久有效，可以添加在windows 的 环境变量设置对话框中。
'''